/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

package Controladores;

import Beans.Categoria;
import java.io.File;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.ObjectInputStream;
import java.io.ObjectOutputStream;
import java.util.ConcurrentModificationException;
import java.util.Iterator;
import java.util.LinkedList;
import java.util.List;
import java.util.Random;
import java.util.logging.Level;
import java.util.logging.Logger;
import javax.swing.JOptionPane;

/**
 *
 * @author Ryodans
 */
public class Mcategoria {

    private List<Categoria> ListCategoria = new LinkedList<Categoria>();
    File archivo=new File("Categorias.dat");
     Categoria ca = new Categoria(); //creacion de una instancia de cliente


     public void grabar() throws IOException {
      FileOutputStream   flujoSalida  = new FileOutputStream(archivo);
      ObjectOutputStream objetoSalida = new ObjectOutputStream(flujoSalida);
      objetoSalida.writeObject(this.getListCategoria());
      objetoSalida.close();
    }


     public void restaurar() throws IOException,ClassNotFoundException {
        if(archivo.exists()==true){
            FileInputStream flujoEntrada    = new FileInputStream(archivo);
  	    ObjectInputStream objetoEntrada = new ObjectInputStream(flujoEntrada);
  	    List<Categoria> Cat = (List) objetoEntrada.readObject();
            this.setListCategoria(Cat);
            objetoEntrada.close();


        }
    }

    public List<Categoria> getListCategoria() {
        return ListCategoria;
    }

    public void setListCategoria(List<Categoria> ListCategoria) {
        this.ListCategoria = ListCategoria;
    }



    //METODOS

    public boolean Existe(int cod){
        boolean con=false;
        Iterator itc=ListCategoria.iterator();
           while(itc.hasNext()){
              ca=(Categoria)itc.next();
              if(ca.getCodigo()== cod){
                    con=true;
                }
            }
           return con;
        } //VERIFICAR LA EXISTENCIA


     public void Registrar(Categoria ar){
         if(!Existe(ar.getCodigo())){
             getListCategoria().add(ar);

            try {
                this.grabar();
            } catch (IOException ex) {
                Logger.getLogger(Mproveedor.class.getName()).log(Level.SEVERE, null, ex);
            }
         }else{
             JOptionPane.showMessageDialog(null, "Esta categoria ya existe");
         }
      }
// REGISTRAR CATEGORIA


    public int GenerarCodigo(){
        int codigo= 0;
        int limite = 10000;
        Random r = new Random();
        codigo = r.nextInt(limite+1);
       return codigo;

    }
       public Categoria Consultar(int cod){
        Iterator itc=ListCategoria.iterator();
         while(itc.hasNext()){
            Categoria cat= (Categoria)itc.next();
            if(cat.getCodigo()== cod){
               return cat;
            }
         }
         return new Categoria();
    } //CONSULTAR CATEGORIA



    public void Eliminar(int cod){
       try{
            Iterator itc=ListCategoria.iterator();
            while(itc.hasNext()){
            ca=(Categoria)itc.next();
            if(ca.getCodigo()==cod){
               getListCategoria().remove(ca);
                    try {
                        this.grabar();
                    } catch (IOException ex) {
                        Logger.getLogger(Mcliente.class.getName()).log(Level.SEVERE, null, ex);
                    }
               JOptionPane.showMessageDialog(null,"Categoria Eliminada");
            }
        }
       }catch(ConcurrentModificationException e){

       }

    } //ELIMINAR CATEGORIA


    public void Modificar(int posi,int cod,Categoria cat){
        Iterator itc=ListCategoria.iterator();
         while(itc.hasNext()){
            ca = (Categoria)itc.next();
            if(ca.getCodigo()==cod){
                this.getListCategoria().set(posi, cat);
                JOptionPane.showMessageDialog(null,"Los Datos se Guardaron "
                                                 + "Satisfactoriamente");
            }
        }
        } //MODIFICAR CATEGORIA



}
